import { createStore } from "redux";

/**
 * 初始化的 state 值
 */
let initialState = {
    token: "",
    user: {},
    menu: [],
};

// 检查本地存储是否存在 state，如果存在，就使用这个默认值
const rootState = window.localStorage.getItem("root_state");
if (rootState) {
    initialState = JSON.parse(rootState);
}

/**
 * state 处理函数
 * @param {*} state
 * @param {*} action
 */
function reducer(state = initialState, { type, payload }) {
    if (type === "loginSuccess") {
        return { token: payload.token, user: payload.user, menu: payload.menu };
    }
    return state;
}

/**
 * 创建一个 store 仓库
 */
const store = createStore(reducer);

/**
 * 当页面卸载时，执行 state 持久化
 */
window.onunload = function () {
    localStorage.setItem("root_state", JSON.stringify(store.getState()));
};

/**
 * 导出这个 store
 */
export default store;
